home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 1 (Walnut Creek)
/
Aminet - June 1993 [Walnut Creek].iso
/
ab20
/
demos
/
comercil
/
ibemdemo.rdm
< prev
next >
Wrap
Text File
|
1991-05-21
|
12KB
|
324 lines
IBEM is an IBM-PC emulator written to run on any Amiga (earlier versions
required a 68020/68030 - this new version will work on ANY processor,
though there is an optimised version for 020/030s included)
This is the demonstration version. As a demonstration there is a
limit on the Hard Disk size of 2MB. There is also a time limit,
which allows the program to run only for 15 minutes, at which time it
will exit. Only one floppy disk can be used with the emulator. None
of these restrictions apply for the complete version.
====================================================================
IBeM Package Version 1.05
-----------------------------
Description:
This software package is an IBM PC-XT emulator for the Amiga.
Unlike transformer which will only run on a 68000, this emulator
has been designed to work only with any Amiga. This emulator runs
under AmigaDOS as a task and runs on its own screen in its own
window. Your Amiga is still free to perform other tasks while the
emulator is running.
Setting up IBeM to run takes a little time, please read this file
before trying to run IBeM.
Send all bug reports (and money) to:
Mark Tomlinson
30 Kirner St
Christchurch 9
New Zealand
or e-mail to:
tomlinson@elec.canterbury.ac.nz
**************************************************************
This package consists of the following files:
IBeM - the emulator itself.
IBeM000 - the 68000/68010 version of the emulator.
mountlist - a sample mountlist
To be able to read and write IBM formatted disks you will also
need messydisk.device or CrossDOS.
Messydisk.device is part of a shareware package known as MSH.
I have been using version 1.30, but other versions eg MSH1.5 may
also work. (NB: MSH1.30 is the update to MSH1.5).
I am also distributing MSH1.30 on the same disk as the emulator,
but please remember that I did not write it, and the money you
send to me for the emulator does not pay for MSH. If you wish to
send the developer of MSH payment, please look in the MSH
directory for his address.
**************************************************************
Hardware required:
------------------
For the 020/030 version:
------------------------
An Amiga with a 68020/68030 (or 68040?) and a minimum of 2MB of
fast ram. This version will not work with the 68000. The reason
for requiring so much memory is that the emulator allocates a
whole 1Meg for the IBM's address space. A math co-processor is
not required, but later versions of the Emulator may use one to
emulate an 8087. IBeM makes no use of the MMU so it will work on
68020 boards which don't include MMU's.
The 020 version is known not to work on early GVP accelerator
boards, but a PAL (that's a logic array, not a display mode)
upgrade is available from the manufacturer. The reason for not
working is that the emulator writes words at odd boundaries
(since 8088's can do this), and while this is valid for 68020 and
68030 processors, the logic on the accelerator board must also
support it. As no extra hardware is required for this function
(except for different contents in the PAL), its omission is
simply an oversight of the developer.
For the 68000/68010 version:
----------------------------
Any Amiga computer. This emulator will also run on 68020/030
processors, but the version made specifically for these processors
is more optimal and will run faster. If you have a GVP
accelerator board which does not run the 020/030 version, then
you can still run the 68000 version.
This version does not require as much ram to run as the 020/030
version - it will run on a 1M machine. A3000 owners who have
only 1M fast mem and 1M chip will also be able to use this
version.
**************************************************************
Emulation:
----------
Currently the emulator supports the full 8088 instruction set,
(don't be confused by system information programs that say that
it is a V20 - the extra V20 instructions are not yet, but may
shortly be, emulated).
A CGA style screen with text and colour graphics is supported.
Full four page 80 column text or 8 page 40 column text are
supported, as well as 4 colour lo-res and 2 colour hi-res display
modes. Flashing mode is not supported, use of this mode results
in a high intensity background colour.
There is no sound, serial port or maths coprocessor emulated as
yet (See update.txt for parallel port emulation). The
development of these functions will depend on the amount of
support this product gets.
Most of the BIOS functions are implemented as illegal
instructions which are then emulated by the Amiga. There are no
IBM ROM's buried inside the code.
**************************************************************
Disks for use under the emulator.
---------------------------------
You will need to create a mountlist entry for all the disk drives
that you wish to use under the emulator. The minimum is a single
floppy (don't expect to be able to run ROM BASIC).
These entries are searched for in the devs:mountlist file. The
drives must be named (in upper case) IBMA:, IBMB:, and IBMC:.
Only two floppies and one harddisk (drive C) are supported. The
fields which the emulator uses are:
BlocksPerTrack
Surfaces
HighCyl
LowCyl
StartCyl
DosType
Device
Unit
Flags
All of these except for Flags are required, any extras are
ignored by the emulator. The DosType field is used for
identifying the drive type. It should be set to one of the
following:
DosType = 1 5.25" 360K drive
2 5.25" 1.2M drive
3 3.5" 720K drive
4 3.5" 1.44M drive
The Flags is passed directly to the device driver. Normally
this is not used, but may have to be set to 1 for 5.25" disks
(= TDF_ALLOW_NON_3_5).
Since extra fields are ignored by the Emultor, it is possible,
simply by adding in a FileSystem, to be able to mount IBMA: and
use it under AmigaDOS (as MSH was intended to be used), and also
have it available under the emulator.
The device *must* support reading into fast ram. Trackdisk
Device does not no this, but messydisk.device does. (Also,
CrossDOS's mfm.device, which is the equivalent to messdisk.device
uses fast ram for buffers). I have yet to see a hard disk which
will not run into fast ram.
Don't expect to be able to read 1.44 Meg disks in the Amiga's
internal floppy drive. I don't even know that a 5.25" drive will
give you a true 360K disk under messydisk.device. The drive
types 1.2M and 1.44M will only be possible if you somehow connect
an IBM style controller to your machine and write a device driver
for it. It is probably possible to make a mount list entry which
will allow you to format 880K amiga-readable MS-DOS file-system
disks. For this and other weird size drives, you will need to
use DRIVER.SYS in order to format them on them emulator.
For hard disks the DosType field is ignored. To create an IBM
hard disk partition on the same drive as your Amiga partition,
just set the HighCyl and LowCyl values such that the two do not
overlap. If this means adjusting the size of your Amiga
partition, you will have to back up your Amiga disk, change the
disk's size (with prep or whatever software has been supplied for
this) allowing room for the IBM's partition. Partitions of over
32 Megabytes are valid, but these will have to be partitioned
under FDISK when you run the emulator unless you try running DOS
4.0.
In any case, after the mountlist entry is set correctly, you will
need to boot MS-DOS from the floppy, run FDISK (which will
re-boot the emulator), and then run FORMAT.
Low-level formatting of harddisks is best done from the Amiga.
Special Note for CrossDOS users.
--------------------------------
CrossDOS can be used to allow you to read your hard disk
partition under AmigaDOS. MSH is also supposed to be capable of
this, but I had no success with it. To use it, you will need to
create another mountlist entry. Since, when you format your
harddisk, a partition table is created, you have to point
CrossDOS past this and at the beginning of the actual C
partition. The C partition starts on the next Track (*not*
Cylinder) of the volume. To specify the next cylinder, you need
to fake the mountlist entry. Specify only one Surface, and set
the LowCyl = (lowcyl for IBMC: * actual number of heads) + 1.
Also set HighCyl to (highcyl for IBMC: * heads + (heads - 1)).
You should then be able to mount this and read your harddisk
files directly, without even running IBeM.
**************************************************************
Running the Emulator:
---------------------
To start the emulator, simply mount all the drives you wish to
use, and then run IBeM. It should print the messages "Using
device IBMx:" as it finds them in the dos device list. If you
get the error message "No bootable disk's found", then you either
haven't mounted the disks first, or else don't have an MS-DOS
disk in the drive.
Since mounting the drives is always necessary, a script file
called "run-ibm" mounts the drives and starts the emulator
(returning to the CLI).
To quit the emulator at any time, simply press ctrl-alt-del. The
emulator will also quit if it encounters an illegal instruction
while executing 8088 code (similar to the Amiga's GURU). If this
happens, the emulator will report the address where the error
occured.
A command line option exists only for the 68000 version for amount
of memory to use. The amount specified should be a multiple of
64K and a maximum of 704K. (eg typing "IBeM000 640" will emulate
a standard 640K ibm).
**************************************************************
Technical Notes:
----------------
As stated above, illegal instructions are used to emulate the
BIOS routines. If you are using a debugger and come upon an
instruction with hex code DB, just step over it, most debuggers
will cope with this.
The timer interrupt (18.20... times per second), is derived from
the VBLANK frequency. This means that the interrupts do not
occur at regular intervals, but rather 2 or 3 VBlanks on a PAL
system, or 3 or 4 VBlanks on an NTSC system. The average time
between ticks comes out right, but individual interrupts do not
occur at regular intervals. Also - if you change modes between
NTSC and PAL, you can expect to get your clock running faster or
slower.
The cursor is a sprite. If you use a mouse blanker which
actually kills all sprites, then the cursor will disappear as
well.
Since IBM's don't know how to wait for an event, the processor
is kept busy at all times (even in the BIOS function "wait for
keypress"). To allow other tasks to be run at the same time, the
emulator automatically switches its task priority to -20. This
means that any processor hungry applications which are running
will lock out the emulator unless they too are set to a priority
of -20 (to get sharing of the processor). Editors, CLI's,
calculators, etc, impact very little on the emulators
performance.
Since it is easy to lock out the emulator from the CPU (with any
other task), the emulator can get behind with its timer
interrupts. If this happens for less than 5 seconds it will
recover however, a timer interrupt will occur every VBLank until
the time has caught up. This can be seen as a fast cursor flash.
Time will be lost however if the emulator is held off the CPU for
more than about 5 seconds (256 VBlanks).
MS-DOS only sees the part of the disk which is stated in the
mountlist. It only knows about the part in the range LowCyl to
HighCyl. When the emulator writes to track 0 this gets
translated to write physically at cylinder LowCyl. So even if
you have a partition on your hard drive between cylinders 415 to
612, FDISK will think you have a drive with 148 cylinders,
starting from 0.
**************************************************************
Known Bugs:
-----------
Conditional branches which are at the end of the code segment and
have a positive displacement will not branch to the beginning of
the code segment as they are supposed to. This was done for
speed. Short jumps do behave correctly however. I have yet to
see some software which this causes a problem. Also, code which
runs past the end of the code segment will not jump back to the
beginning of the segment.